From 72615a1b1673410f59afb77e5265926383a12b69 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 5 Sep 2015 06:58:17 +0200 Subject: [PATCH] stylecontext: Add gtk_style_context_add_named() This is an intermediate step for cssnode introduction. It gives a name for the node created by saving the style context. --- gtk/gtkstylecontext.c | 40 +++++++++++++++++++++--------------- gtk/gtkstylecontextprivate.h | 3 +++ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 5d059a0956..f099b54aa8 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -1179,6 +1179,29 @@ gtk_style_context_get_parent (GtkStyleContext *context) return context->priv->parent; } +void +gtk_style_context_save_named (GtkStyleContext *context, + const char *name) +{ + GtkStyleContextPrivate *priv; + GtkCssNode *cssnode; + + priv = context->priv; + + /* Make sure we have the style existing. It is the + * parent of the new saved node after all. */ + if (!gtk_style_context_is_saved (context)) + gtk_style_context_lookup_style (context); + + cssnode = gtk_css_transient_node_new (priv->cssnode); + gtk_css_node_set_parent (cssnode, gtk_style_context_get_root (context)); + if (name) + gtk_css_node_set_name (cssnode, g_intern_string (name)); + + priv->saved_nodes = g_slist_prepend (priv->saved_nodes, priv->cssnode); + priv->cssnode = cssnode; +} + /** * gtk_style_context_save: * @context: a #GtkStyleContext @@ -1196,24 +1219,9 @@ gtk_style_context_get_parent (GtkStyleContext *context) void gtk_style_context_save (GtkStyleContext *context) { - GtkStyleContextPrivate *priv; - GtkCssNode *cssnode; - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - priv = context->priv; - - /* Make sure we have the style existing. It is the - * parent of the new saved node after all. - */ - if (!gtk_style_context_is_saved (context)) - gtk_style_context_lookup_style (context); - - cssnode = gtk_css_transient_node_new (priv->cssnode); - gtk_css_node_set_parent (cssnode, gtk_style_context_get_root (context)); - - priv->saved_nodes = g_slist_prepend (priv->saved_nodes, priv->cssnode); - priv->cssnode = cssnode; + gtk_style_context_save_named (context, NULL); } /** diff --git a/gtk/gtkstylecontextprivate.h b/gtk/gtkstylecontextprivate.h index 4ba27fe334..22ac942bc0 100644 --- a/gtk/gtkstylecontextprivate.h +++ b/gtk/gtkstylecontextprivate.h @@ -36,6 +36,9 @@ const char * gtk_style_context_get_id (GtkStyleContext *c GtkStyleProviderPrivate * gtk_style_context_get_style_provider (GtkStyleContext *context); +void gtk_style_context_save_named (GtkStyleContext *context, + const char *name); + const GtkBitmask * _gtk_style_context_get_changes (GtkStyleContext *context); -- 2.30.2